package com.sign2024.sign2024project.projecttask.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sign2024.sign2024core.entry.projecttask.FormulaDefault;
import com.sign2024.sign2024core.entry.projecttask.ProjectTask;
import com.sign2024.sign2024project.projecttask.param.ProjectTaskParam;
import com.sign2024.sign2024project.projecttask.vo.ProjectTaskListVo;
import com.sign2024.sign2024project.projecttask.vo.ProjectTaskVo;
import com.sign2024.sign2024project.projecttask.vo.RollbackVo;

import java.util.List;

/**
 * 工程任务 数据层
 *
 * @author yujie
 * @data 2024/7/31 15:14
 */
public interface ProjectTaskService {

    /**
     * 查询工程 任务详细 信息
     *
     * @param id
     * @return 任务详细 信息
     */
    ProjectTask selectProjectTaskData(Integer id);

    /**
     * 创建 任务
     *
     * @param taskState 任务标识,0工程服务,1基建,2物资类
     * @return 工程任务 vo
     */
    ProjectTaskVo createTask(Integer taskState);

    /**
     * 更新数据
     *
     * @param projectTask 实例对象
     * @return 影响行数
     */
    int updateTask(ProjectTask projectTask);

    /**
     * 分页查询 工程任务 信息
     *
     * @param param 分页参数
     * @return 分页数据信息
     */
    Page<ProjectTaskListVo> pageProjectTask(ProjectTaskParam param);

    /**
     * 逻辑删除 任务
     *
     * @param id 任务 id
     */
    void delFlagTask(Integer id);

    /**
     * 修改 默认公式
     *
     * @param formulaDefault 实例对象
     */
    void updateDefault(FormulaDefault formulaDefault);

    /**
     * 获取 公式默认表 基本数据
     *
     * @return
     */
    FormulaDefault selectDefaultOne();

    /**
     * 回退 默认公式
     */
    FormulaDefault returnDefault();

    /**
     * 根据 任务标识获取 更新记录
     *
     * @param taskState 任务标识
     * @return
     */
    List<RollbackVo> selectRollbackByTaskState(Integer taskState);
}
